package app

import (
	"fmt"
	"strconv"

	myrpc "github.com/2217263633/kakarpc"
	"github.com/gin-gonic/gin"
	"github.com/wonderivan/logger"
)

// @BasePath /api/v1
// PingExample godoc
// @Summary 获取地点
// @Schemes
// @Description
// @Param company_id query int true "公司ID"
// @Param size query int false "一页多少条,默认10"
// @Param status query int false "状态0未处理,1已通过,2拒绝"
// @Param page query int false "第几页,不传为第1页"
// @Security Authorization
// @Tags 设备管理
// @Accept json
// @Produce json
// @Router /Partner/item [get]
func GetPartner(c *gin.Context) {
	companyIdStr := c.Query("company_id")
	statusStr := c.Query("status")
	pageStr := c.Query("page")
	sizeStr := c.Query("size")
	companyId, err := strconv.Atoi(companyIdStr)
	if err != nil {
		myrpc.DetailErr(err.Error(), c)
		return
	}
	status, _ := strconv.Atoi(statusStr)
	size, _ := strconv.Atoi(sizeStr)
	page, _ := strconv.Atoi(pageStr)
	JudgePartnerTable(companyId)

	sql := myrpc.SqlStruct{}
	sql.Values = "*"
	sql.Tabel_name = GetPartnerStr(companyId)
	sql.Order += "order by id desc"
	logger.Info(status)
	// myrpc.PageSql(sql, page, size)
	// resu, total, size, _ := mysql.CusSql.PageSql3(sql, page, size)
	c.JSON(200, gin.H{"data": "resu", "total": "total", "page": page, "size": size})

}

// @BasePath /api/v1
// PingExample godoc
// @Summary 添加地点
// @Schemes
// @Description 添加时,name 不能为空
// @Param data body PartnerFrom true "公司ID"
// @Security Authorization
// @Tags 设备管理
// @Accept json
// @Produce json
// @Router /partner [post]
func PostPartner(c *gin.Context) {
	var reviceFrom PartnerFrom
	err := c.ShouldBind(&reviceFrom)

	if err != nil {
		myrpc.DetailErr(err.Error(), c)
		return
	}

	if reviceFrom.Name == "" {
		myrpc.DetailErr("添加时，名称不能为空", c)
		return
	}
	reviceFrom.Id = 0

	JudgePartnerTable(reviceFrom.Company_id)

	fields, values := myrpc.StructToSql(reviceFrom)

	fieldStr := myrpc.Utils.ListToString(fields[1:])
	valueStr := myrpc.Utils.ListToAny(values[1:])
	sql := fmt.Sprintf(`INSERT INTO %s (%s) VALUES(%s)`,
		GetPartnerStr(reviceFrom.Company_id),
		fieldStr, valueStr,
	)
	// err = myrpc.InsertTable(sql)
	logger.Info(sql)
	if err != nil {
		myrpc.DetailErr(err.Error(), c)
		return
	}

	c.JSON(200, gin.H{"data": "添加成功"})
}

// @BasePath /api/v1
// PingExample godoc
// @Summary 修改地点
// @Schemes
// @Description 添加时，name 不能为空
// @Param data body PartnerFrom true "公司ID"
// @Security Authorization
// @Tags 设备管理
// @Accept json
// @Produce json
// @Router /partner [put]
func PutPartner(c *gin.Context) {
	var reviceFrom PartnerFrom
	var obj = myrpc.DefaultStuct(c)
	err := c.ShouldBind(&reviceFrom)

	if err != nil {
		myrpc.DetailErr(err.Error(), c)
		return
	}

	if reviceFrom.Id < 1 {
		myrpc.DetailErr("修改时,id不能为空", c)
		return
	}

	JudgePartnerTable(reviceFrom.Company_id)
	fields, values := myrpc.StructToSql2(reviceFrom, obj)
	valuStr := myrpc.Utils.ListLog(fields[2:], values[2:])

	sql := fmt.Sprintf(`UPDATE %s set %s where id=%d`,
		GetPartnerStr(reviceFrom.Company_id), valuStr, reviceFrom.Id)
	// err = myrpc.CusSql.UpdateTable(sql)
	logger.Info(sql)
	if err != nil {
		myrpc.DetailErr(err.Error(), c)
		return
	}

	c.JSON(200, gin.H{"data": "修改成功"})
}

// @BasePath /api/v1
// PingExample godoc
// @Summary 删除地点
// @Schemes
// @Description 删除时, id不能为空
// @Param data body PartnerFrom true "公司ID"
// @Security Authorization
// @Tags 设备管理
// @Accept json
// @Produce json
// @Router /partner [delete]
func DeletePartner(c *gin.Context) {
	var reviceFrom PartnerFrom
	err := c.ShouldBind(&reviceFrom)

	if err != nil {
		myrpc.DetailErr(err.Error(), c)
		return
	}

	if reviceFrom.Id < 1 {
		myrpc.DetailErr("删除时,id不能为空", c)
		return
	}
	JudgePartnerTable(reviceFrom.Company_id)
	sql := fmt.Sprintf(`DELETE FROM  %s where id=%d `,
		GetPartnerStr(reviceFrom.Company_id), reviceFrom.Id)
	// err = mysql.CusSql.DelectTable(sql)
	logger.Info(sql)
	if err != nil {
		myrpc.DetailErr(err.Error(), c)
		return
	}

	c.JSON(200, gin.H{"data": "删除成功"})
}
